package com.netflexitysolutions.amazonws.ec2;

import java.util.List;
import java.util.Set;

public class InstanceStartupParameters {
	
	private String imageId;
	
	private int minCount;
	
	private int maxCount;
	
	private String keyName;
	
	private Set<String> secutiryGroups;
	
	private String userData;
	
	private InstanceType instanceType;
	
	private String availabilityZone;
	
	private String kernelId;
	
	private String ramdiskId;
	
	private List<BlockDeviceMapping> blockDeviceMappings;
	
	private Boolean enableMonitoring;

	public InstanceStartupParameters(String imageId) {
		this(imageId, 1, 1);
	}
	
	public InstanceStartupParameters(String imageId, int minCount, int maxCount) {
		this.imageId = imageId;
		this.minCount = minCount;
		this.maxCount = maxCount;
	}
	
	/**
	 * @return the imageId
	 */
	public String getImageId() {
		return imageId;
	}

	/**
	 * @param imageId the imageId to set
	 */
	public void setImageId(String imageId) {
		this.imageId = imageId;
	}

	/**
	 * @return the minCount
	 */
	public int getMinCount() {
		return minCount;
	}

	/**
	 * @param minCount the minCount to set
	 */
	public void setMinCount(int minCount) {
		this.minCount = minCount;
	}

	/**
	 * @return the maxCount
	 */
	public int getMaxCount() {
		return maxCount;
	}

	/**
	 * @param maxCount the maxCount to set
	 */
	public void setMaxCount(int maxCount) {
		this.maxCount = maxCount;
	}

	/**
	 * @return the keyName
	 */
	public String getKeyName() {
		return keyName;
	}

	/**
	 * @param keyName the keyName to set
	 */
	public void setKeyName(String keyName) {
		this.keyName = keyName;
	}

	/**
	 * @return the secutiryGroups
	 */
	public Set<String> getSecutiryGroups() {
		return secutiryGroups;
	}

	/**
	 * @param secutiryGroups the secutiryGroups to set
	 */
	public void setSecutiryGroups(Set<String> secutiryGroups) {
		this.secutiryGroups = secutiryGroups;
	}

	/**
	 * @return the userData
	 */
	public String getUserData() {
		return userData;
	}

	/**
	 * @param userData the userData to set
	 */
	public void setUserData(String userData) {
		this.userData = userData;
	}

	/**
	 * @return the instanceType
	 */
	public InstanceType getInstanceType() {
		return instanceType;
	}

	/**
	 * @param instanceType the instanceType to set
	 */
	public void setInstanceType(InstanceType instanceType) {
		this.instanceType = instanceType;
	}

	/**
	 * @return the availabilityZone
	 */
	public String getAvailabilityZone() {
		return availabilityZone;
	}

	/**
	 * @param availabilityZone the availabilityZone to set
	 */
	public void setAvailabilityZone(String availabilityZone) {
		this.availabilityZone = availabilityZone;
	}

	/**
	 * @return the kernelId
	 */
	public String getKernelId() {
		return kernelId;
	}

	/**
	 * @param kernelId the kernelId to set
	 */
	public void setKernelId(String kernelId) {
		this.kernelId = kernelId;
	}

	/**
	 * @return the ramdiskId
	 */
	public String getRamdiskId() {
		return ramdiskId;
	}

	/**
	 * @param ramdiskId the ramdiskId to set
	 */
	public void setRamdiskId(String ramdiskId) {
		this.ramdiskId = ramdiskId;
	}

	/**
	 * @return the blockDeviceMappings
	 */
	public List<BlockDeviceMapping> getBlockDeviceMappings() {
		return blockDeviceMappings;
	}

	/**
	 * @param blockDeviceMappings the blockDeviceMappings to set
	 */
	public void setBlockDeviceMappings(List<BlockDeviceMapping> blockDeviceMappings) {
		this.blockDeviceMappings = blockDeviceMappings;
	}

	/**
	 * @return the enableMonitoring
	 */
	public Boolean getEnableMonitoring() {
		return enableMonitoring;
	}

	/**
	 * @param enableMonitoring the enableMonitoring to set
	 */
	public void setEnableMonitoring(Boolean enableMonitoring) {
		this.enableMonitoring = enableMonitoring;
	}

	
}
